// sysModelAttr.js
const Base = require('../base.js');
// https://testjoylearning.bmw.com.cn:8080/sys/storeApprove/list?pageNo=1&pageSize=10
module.exports = function(sequelize, DataTypes) {
    function getAttributes(sequelize, DataTypes) {
        const attributes = {
            modelAttrId: {
                field: "model_attr_id",
                type: DataTypes.BIGINT(20),
                primaryKey: true,
                comment: "模型字段ID"
            },
            modelId: {
                field: "model_id",
                type: DataTypes.BIGINT(20),
                allowNull: true,
                comment: "模型ID"
            },
            pkFlag:{
                field: "pk_flag",
                type: DataTypes.STRING(1),
                allowNull: true,
                comment: "是否主键"
            },
            akFlag:{
                field: "ak_flag",
                type: DataTypes.STRING(1),
                allowNull: true,
                comment: "是否唯一键"
            },
            uniqueName:{
                field: "unique_name",
                type: DataTypes.STRING(50),
                allowNull: false,
                comment: "唯一标识名(名字相同的是一组)"
            },
            attrDesc:{
                field: "attr_desc",
                type: DataTypes.STRING(500),
                allowNull: true,
                comment: "字段描述"
            },
            modelAttrName:{
                field: "model_attr_name",
                type: DataTypes.STRING(50),
                allowNull: true,
                comment: "属性名称代码中名称"
            },
            modelAttrCode:{
                field: "model_attr_code",
                type: DataTypes.STRING(20),
                allowNull: true,
                comment: "属性编码数据库字段名"
            },
            attrType:{
                field: "attr_type",
                type: DataTypes.STRING(20),
                allowNull: true,
                comment: "JAVA类型"
            },
            isRequired:{
                field: "is_required",
                type: DataTypes.STRING(1),
                allowNull: true,
                comment: "是否必填 Y=是 N=否"
            },
            attrLen:{
                field: "attr_len",
                type: DataTypes.BIGINT(11),
                allowNull: true,
                comment: "长度"
            },
            scale:{
                field: "scale",
                type: DataTypes.BIGINT(11),
                allowNull: true,
                comment: "精度"
            },
            sortNo:{
                field: "sort_no",
                type: DataTypes.BIGINT(11),
                allowNull: true,
                comment: "排序"
            },
            isReadonly:{
                field: "is_readonly",
                type: DataTypes.STRING(1),
                allowNull: true,
                comment: "是否只读，不能修改"
            },
            isUseDbFlag:{
                field: "is_use_db_flag",
                type: DataTypes.STRING(1),
                allowNull: true,
                comment: "是否自动生成值"
            },
            dbExpress:{
                field: "db_express",
                type: DataTypes.STRING(200),
                allowNull: false,
                comment: "自动生成的表达式"
            },
            isVerFlag:{
                field: "is_ver_flag",
                type: DataTypes.STRING(1),
                allowNull: true,
                comment: "是否版本号标记"
            },
            isDelFlag:{
                field: "is_del_flag",
                type: DataTypes.STRING(1),
                allowNull: true,
                comment: "是否删除标记"
            },
            buildType:{
                field: "build_type",
                type: DataTypes.BIGINT(11),
                allowNull: true,
                comment: "字段创建类型 1=系统字段 2=自定义字段"
            },
            // attConType:{
            //     field: "att_con_type",
            //     type: DataTypes.STRING(100),
            //     allowNull: true,
            //     comment: "字段控件类型"
            // },
            // editPlaceHolder:{
            //     field: "edit_place_holder",
            //     type: DataTypes.STRING(200),
            //     allowNull: false,
            //     comment: "编辑时提示信息"
            // },
            // editTooltip:{
            //     field: "edit_tooltip",
            //     type: DataTypes.STRING(200),
            //     allowNull: false,
            //     comment: "编辑悬浮描述"
            // },
            // dataSou:{
            //     field: "data_sou",
            //     type: DataTypes.STRING(500),
            //     allowNull: false,
            //     comment: "选择器数据源"
            // },
            // dataSouType:{
            //     field: "data_sou_type",
            //     type: DataTypes.STRING(20),
            //     allowNull: false,
            //     comment: "数据源类型"
            // },
            // queryExp:{
            //     field: "query_exp",
            //     type: DataTypes.STRING(500),
            //     allowNull: false,
            //     comment: "数据源查询条件"
            // },
            // defVal:{
            //     field: "def_val",
            //     type: DataTypes.STRING(500),
            //     allowNull: false,
            //     comment: "默认值"
            // },
            // isMSelect:{
            //     field: "is_m_select",
            //     type: DataTypes.STRING(1),
            //     allowNull: true,
            //     comment: "是否多选"
            // },
            // maxMSelect:{
            //     field: "max_m_select",
            //     type: DataTypes.BIGINT(11),
            //     allowNull: true,
            //     comment: "最大多选数量"
            // },
            // ruleList:{
            //     field: "rule_list",
            //     type: DataTypes.STRING(500),
            //     allowNull: false,
            //     comment: "校验规则"
            // },
            ...Base.getAttr(sequelize, DataTypes)
            
            
        };
        return attributes;
    };
    const sysModelAttr = sequelize.define('sysModelAttr', getAttributes(sequelize, DataTypes), {
        freezeTableName: true,
        tableName: "sys_model_attr",
        timestamps: false
    });
    Base.extendModel(sysModelAttr, getAttributes(sequelize, DataTypes));
    return sysModelAttr;
};